package com.sws.framework.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

import javax.sql.DataSource;
import java.util.TimeZone;

/**
 * 数据库时区配置
 * 确保数据库连接使用北京时区(GMT+8)
 */
@Configuration
public class DatabaseTimeZoneConfig {

    /**
     * 全局设置JVM默认时区为北京时区
     * 这将影响所有未明确指定时区的操作
     */
    static {
        // 设置JVM默认时区为北京时区
        TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
    }
    
    /**
     * 配置数据源属性
     * 在数据源URL中添加时区参数（针对MySQL）
     */
    @Bean
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSourceProperties dataSourceProperties() {
        return new DataSourceProperties() {
            @Override
            public String determineUrl() {
                String url = super.determineUrl();
                // 检查是否为MySQL数据源，如果是则添加serverTimezone参数
                if (url != null && url.contains("mysql") && !url.contains("serverTimezone")) {
                    if (url.contains("?")) {
                        url += "&serverTimezone=Asia/Shanghai";
                    } else {
                        url += "?serverTimezone=Asia/Shanghai";
                    }
                }
                return url;
            }
        };
    }
} 